In today's database systems that have multiple server applications executing tasks over multiple threads, there is a need for the server applications to converge to some external service in parallel to meet the service's workload requirements. The external service might have certain load characteristics and constraints. In such a system, it may be necessary for the server applications to deliver to the external service with full scale-up and scale-out functionality. However, in the current state of the art, there is no simple means of having control over failures and re-balancing of the workload due to failures in one or more of the server applications, particularly in the case where the applications rely primarily on database primitives for communication with the database.
Large database architectures generally use two-tier or three-tier systems with a single underlying database in the last tier. This database by virtue of being a single point of failure might be made highly available by data replication or other methods of redundancy such as having redundant network connections. The application servers running in the second tier are typically scaled up and out in most transaction systems. Such systems may have a requirement to deliver transactions to some external application like data indexing, master data transmission or authentication. Although data replication and redundancy mechanism somewhat address the vulnerability of the database in mission-critical data systems, they do not provide a way for dynamically re-balancing the workload of the external application among the server applications.
From the foregoing, it is appreciated that there still exists a need for a method and system for distributed task dispatch among the server applications in a multi-application database environment without the aforementioned drawbacks.